/*
 * @Description:多线程售票
 * 
 * @Author: rendc
 * 
 * @Date: 2025-08-20 09:53:55
 * 
 * @LastEditors: rendc
 * 
 * @LastEditTime: 2025-08-20 10:18:05
 */
public class Ticket implements Runnable {
  // 总票数
  private int num = 500;

  // 使用同步代码块
  // 创建一个锁对象【多个线程必须使用相同的锁】
  Object mutex = new Object();

  @Override
  public void run() {
    while (true) {
      // 同步代码块，将需要同步的操作放到代码块中
      synchronized (mutex) {
        // if (num == 0) {
        if (num <= 0) {
          break;
        }
        String name = Thread.currentThread().getName();
        System.out.println("售票口" + name + "正在售票，第" + num + "张");
        // 售票后num-1
        num--;
        try {
          // 每隔50ms卖一张
          Thread.sleep(50);
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
  }
}